// 监听安装事件
chrome.runtime.onInstalled.addListener(function() {
  console.log('快速收藏插件已安装');
  
  // 创建默认收藏夹
  chrome.bookmarks.search({title: '快速收藏'}, function(results) {
    if (results.length === 0) {
      chrome.bookmarks.create({
        title: '快速收藏'
      }, function(folder) {
        console.log('创建快速收藏文件夹，ID: ' + folder.id);
        // 保存文件夹ID
        chrome.storage.local.set({quickBookmarkFolderId: folder.id});
      });
    } else {
      // 保存已有文件夹ID
      chrome.storage.local.set({quickBookmarkFolderId: results[0].id});
    }
  });
  
  // 添加右键菜单功能
  chrome.contextMenus.create({
    id: "quickBookmark",
    title: "添加到快速收藏",
    contexts: ["page", "link"]
  });
});

// 网络请求示例：获取网站元数据
function fetchWebsiteMetadata(url) {
  console.log('请求网站元数据:', url);
  console.log('网站URL:', url);
}

const baseUrl = 'http://localhost:8080';

// 通用网络请求方法
function makeRequest(url, method, data, headers = {}) {
  const defaultHeaders = {
    'Content-Type': 'application/json',
  };
  
  const requestOptions = {
    method: method,
    headers: { ...defaultHeaders, ...headers },
  };
  
  if (data && (method === 'POST' || method === 'PUT')) {
    requestOptions.body = JSON.stringify(data);
  }
  
  return fetch(url, requestOptions)
    .then(response => {
      if (!response.ok) {
        throw new Error(`请求失败: ${response.status}`);
      }
      return response.json();
    });
}


// 处理右键菜单点击
chrome.contextMenus.onClicked.addListener(function(info, tab) {

  chrome.storage.local.get(['user', 'isLoggedIn'], function(data) {
    if (data.isLoggedIn && data.user) {
      // 调用通用请求方法
       makeRequest(baseUrl + '/auth/getCate', 'POST', null, {
          'Authorization': data.user.token
        })
      .then(data => {
        if(data.code != 200){
          showLoginStatus(data.msg, 'error');
          return;
        }

        console.log(data)
        
      })
      .catch(error => {
        console.error('请求错误:', error);
      });
    } 
  });



  if (info.menuItemId === "quickBookmark") {
    // 获取要收藏的URL和标题
    const url = info.linkUrl || info.pageUrl;
    const title = tab.title;
    
    // 检查URL是否是浏览器内部页面
    if (url.startsWith('chrome://') || 
        url.startsWith('chrome-extension://') || 
        url.startsWith('edge://') || 
        url.startsWith('about:')) {
      // 对于浏览器内部页面，直接创建书签而不获取描述
      createBookmarkWithoutDescription(url, title, tab.id);
      return;
    }
    
    // 尝试获取网页描述
    try {
      chrome.scripting.executeScript({
        target: { tabId: tab.id },
        func: function() {
          // 尝试从meta标签获取描述
          let description = document.querySelector("meta[name='description']")?.content || 
                            document.querySelector("meta[property='og:description']")?.content;
          
          // 如果没有meta描述，尝试获取第一段文本
          if (!description) {
            const paragraphs = document.querySelectorAll('p');
            for (let i = 0; i < paragraphs.length; i++) {
              const text = paragraphs[i].textContent.trim();
              if (text && text.length > 20) { // 只获取有意义的段落（至少20个字符）
                description = text.substring(0, 200) + (text.length > 200 ? '...' : ''); // 限制长度
                break;
              }
            }
          }
          
          return description || "";
        }
      }).then(results => {
        let description = "";
        if (results && results[0] && results[0].result) {
          description = results[0].result;
        }
        
        // 创建带描述的书签
        createBookmarkWithDescription(url, title, description, tab.id);
      }).catch(error => {
        console.error('获取描述失败:', error);
        // 如果获取描述失败，仍然创建书签但没有描述
        createBookmarkWithoutDescription(url, title, tab.id);
      });
    } catch (error) {
      console.error('获取描述失败:', error);
      // 如果获取描述失败，仍然创建书签但没有描述
      createBookmarkWithoutDescription(url, title, tab.id);
    }
  }
});

// 创建带描述的书签
function createBookmarkWithDescription(url, title, description, tabId) {
  // 获取收藏夹ID
  chrome.storage.local.get('quickBookmarkFolderId', function(data) {
    const folderId = data.quickBookmarkFolderId;
    
    // 创建书签
    chrome.bookmarks.create({
      parentId: folderId,
      title: title,
      url: url
    }, function(bookmark) {
      console.log('已添加收藏: ' + bookmark.title);
      
      // 保存到最近收藏
      chrome.storage.local.get(['user', 'isLoggedIn', 'recentBookmarks'], function(data) {
        if (data.isLoggedIn && data.user && data.user.token) {
          // 向后端发送保存收藏请求
          makeRequest(baseUrl + '/auth/saveSite', 'POST', {
            name: bookmark.title,
            addr: bookmark.url,
            description: description || "" // 添加描述字段
          }, {
            'Authorization': data.user.token
          })
          .then(response => {
            if (response.code != 200) {
              console.error('保存收藏失败:', response.msg);
              return;
            }
            console.log('成功保存收藏到服务器');
          })
          .catch(error => {
            console.error('保存收藏错误:', error);
          });
        } else {
          // 如果未登录，使用本地存储
          let recentBookmarks = data.recentBookmarks || [];
          
          // 检查是否已存在
          const existingIndex = recentBookmarks.findIndex(b => b.url === bookmark.url);
          if (existingIndex !== -1) {
            recentBookmarks.splice(existingIndex, 1);
          }
          
          // 添加到最前面，包含描述信息
          const bookmarkWithDesc = {
            id: bookmark.id,
            title: bookmark.title,
            url: bookmark.url,
            description: description || ""
          };
          
          recentBookmarks.unshift(bookmarkWithDesc);
          
          // 只保留最近10个
          if (recentBookmarks.length > 10) {
            recentBookmarks = recentBookmarks.slice(0, 10);
          }
          
          chrome.storage.local.set({recentBookmarks: recentBookmarks});
        }
      });
    });
  });
}

// 创建不带描述的书签
function createBookmarkWithoutDescription(url, title, tabId) {
  // 获取收藏夹ID
  chrome.storage.local.get('quickBookmarkFolderId', function(data) {
    const folderId = data.quickBookmarkFolderId;
    
    // 创建书签
    chrome.bookmarks.create({
      parentId: folderId,
      title: title,
      url: url
    }, function(bookmark) {
      console.log('已添加收藏: ' + bookmark.title);
      
      // 保存到最近收藏
      chrome.storage.local.get(['user', 'isLoggedIn', 'recentBookmarks'], function(data) {
        if (data.isLoggedIn && data.user && data.user.token) {
          // 向后端发送保存收藏请求
          makeRequest(baseUrl + '/auth/saveSite', 'POST', {
            name: bookmark.title,
            addr: bookmark.url
          }, {
            'Authorization': data.user.token
          })
          .then(response => {
            if (response.code != 200) {
              console.error('保存收藏失败:', response.msg);
              return;
            }
            console.log('成功保存收藏到服务器');
          })
          .catch(error => {
            console.error('保存收藏错误:', error);
          });
        } else {
          // 如果未登录，使用本地存储
          let recentBookmarks = data.recentBookmarks || [];
          
          // 检查是否已存在
          const existingIndex = recentBookmarks.findIndex(b => b.url === bookmark.url);
          if (existingIndex !== -1) {
            recentBookmarks.splice(existingIndex, 1);
          }
          
          // 添加到最前面
          recentBookmarks.unshift({
            id: bookmark.id,
            title: bookmark.title,
            url: bookmark.url
          });
          
          // 只保留最近10个
          if (recentBookmarks.length > 10) {
            recentBookmarks = recentBookmarks.slice(0, 10);
          }
          
          chrome.storage.local.set({recentBookmarks: recentBookmarks});
        }
      });
    });
  });
}